package es.analisis.algoritmos;

class Objeto implements Cloneable{
	
	private int id;
	private int peso;
	private int valor;
	private int enMochila;    // Atributo para indicar si el objeto i esta en la mochila, se usa en el B&B
	private double valorPeso;

    public Objeto(){

    }

	public Objeto(int id, int peso, int valor) {
		super();
		this.id = id;
		this.peso = peso;
		this.valor = valor;
		this.setEnMochila(0);
		try {
			this.valorPeso = new Double(valor) / new Double(peso) ;
		} catch (ArithmeticException e) {
			this.valorPeso = 0;
		}
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public int getPeso() {
		return peso;
	}

	public void setPeso(int peso) {
		this.peso = peso;
	}

	public int getValor() {
		return valor;
	}

	public void setValor(int valor) {
		this.valor = valor;
	}

	public double getValorPeso() {
		return valorPeso;
	}

	public void setValorPeso(double valorPeso) {
		this.valorPeso = valorPeso;
	}

	public int getEnMochila() {
		return enMochila;
	}

	public void setEnMochila(int enMochila) {
		this.enMochila = enMochila;
	}

	@Override
	public String toString() {
		return "Elemento [id=" + id + ", peso=" + peso + ", valor=" + valor
				+ ", valorPeso=" + valorPeso + ", enMochila=" + enMochila+"]";
	}


	public Objeto clone() {
        Objeto nuevo = new Objeto();
        nuevo.setEnMochila(this.getEnMochila());
        nuevo.setId(this.id);
        nuevo.setPeso(this.getPeso());
        nuevo.setValor(this.getValor());
        nuevo.setValorPeso(this.getValorPeso());
        return nuevo;
    }
	
}
